﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using vudu.ClasesDominio;
using vudu.Logica.Excepciones;
using vudu.Logica.Fachada;
using vudu.Presentacion.Contrato.VU_06_Gestionar_Profesores;

namespace vudu.Presentacion.Presentador.VU_06_Gestionar_Profesores
{
    public class PresentadorEliminarProfesor
    {
        private IContratoEliminarProfesor _vista;
        private List<Profesor> _misProfesores = new List<Profesor>();
        private EnlaceLogico _fachada = new EnlaceLogico();
        private Escuela esc;

        public PresentadorEliminarProfesor (IContratoEliminarProfesor vista, EnlaceLogico _fachada)
        {
            _vista = vista;
            esc = (Escuela) _fachada.RolActual;
        }

        public void ConsultaProfesor()
        {
            try
            {
                _misProfesores = _fachada.consultarProfesores(esc.IdEscuela);
                CargarTabla(_misProfesores);
            }
            catch (ConexionExeption e)
            {
                _vista.MensajeError.CssClass = "transaccionFallida";
                _vista.MensajeError.Text = "Operacion Fallida: " + e.Message;
                _vista.MensajeError.Visible = true;
            }
            catch (NoHayProfesoresEscuelaException e)
            {
                _vista.MensajeError.CssClass = "transaccionFallida";
                _vista.MensajeError.Text = "Operacion Fallida: " + e.Message;
                _vista.MensajeError.Visible = true;
            }
        }


        public void CargarTabla(List<Profesor> misProfesores)
        {
            DataTable tabla = new DataTable();
            tabla.Columns.Add("Nombre", typeof(string));
            tabla.Columns.Add("Apellido", typeof(string));
            tabla.Columns.Add("email", typeof(string));
            foreach (Profesor profesor in misProfesores)
            {
                string nombreProfesor = profesor.Nombre;
                if (nombreProfesor != null)
                {
                    tabla.Rows.Add(profesor.Nombre, profesor.Apellido, profesor.Email);
                }
            }
            _vista.ProfesoresEscuela.DataSource = tabla;
            _vista.ProfesoresEscuela.DataBind();
        }

        public Profesor BuscarProfesor()
        {
            int x = (_vista.ProfesoresEscuela.PageIndex * 8) + _vista.ProfesoresEscuela.SelectedIndex;
            return _misProfesores.ElementAt(x);
        }

        public void SeleccionEliminar()
        {
            int x = (_vista.ProfesoresEscuela.PageIndex * 8) + _vista.ProfesoresEscuela.SelectedIndex;
            Profesor profesor = _misProfesores.ElementAt(x);
            _fachada.EnlaceLogicoEliminarProfesor(profesor.Crn, esc.IdEscuela);
            _misProfesores.RemoveAt(x);
            CargarTabla(_misProfesores);
            _vista.MensajeError.Text = "Transaccion Exitosa";
            _vista.MensajeError.Visible = true;
            //_vista.UxMensajeTransaccion.Text = MensajeTransaccionExitosa;
            //_vista.UxMensajeTransaccion.CssClass = "transaccionExitosa";
            //_vista.UxMensajeTransaccion.Visible = true;
        }
    }
}